package com.nuo.quartz.serve.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nuo.common.core.page.PageResult;
import com.nuo.quartz.beans.pojo.request.QuartzJobAddReqDTO;
import com.nuo.quartz.beans.pojo.request.QuartzJobPageQueryReqDTO;
import com.nuo.quartz.beans.pojo.request.QuartzJobUpdateReqDTO;
import com.nuo.quartz.beans.pojo.request.QuartzLogPageQueryReqDTO;
import com.nuo.quartz.beans.pojo.response.QuartzJobRespDTO;
import com.nuo.quartz.beans.pojo.response.QuartzLogRespDTO;
import com.nuo.common.quartz.core.entity.QuartzJobDO;


/**
 * @author LGC
 */
public interface QuartzJobDOService extends IService<QuartzJobDO> {
    /**
     * 任务查询
     *
     * @param id 任务ID
     * @return Object
     */
    QuartzJobRespDTO getById(Integer id);

    /**
     * 任务分页查询
     *
     * @param dto 任务分页查询
     * @return Object
     */
    PageResult<QuartzJobRespDTO> jobPage(QuartzJobPageQueryReqDTO dto);

    /**
     * 新增任务
     *
     * @param dto 新增任务
     * @return Object
     */
    Integer add(QuartzJobAddReqDTO dto);

    /**
     * 更新任务
     *
     * @param dto 更新任务
     * @return Object
     */
    Integer update(QuartzJobUpdateReqDTO dto);

    /**
     * 暂停任务
     *
     * @param id 任务ID
     */
    void pause(Integer id);

    /**
     * 恢复任务
     *
     * @param id 任务ID
     */
    void resume(Integer id);

    /**
     * 执行一次任务
     *
     * @param id 任务ID
     */
    void runOnce(Integer id);

    /**
     * 任务日志分页查询
     *
     * @param dto 任务日志分页查询
     * @return Object
     */
    PageResult<QuartzLogRespDTO> jobLogPage(QuartzLogPageQueryReqDTO dto);
}
